package co.edu.javeriana.monopoly.server.eventos;

import co.edu.javeriana.monopoly.server.modelo.EstadoJugador;
import co.edu.javeriana.monopoly.server.modelo.Evento;
import co.edu.javeriana.monopoly.server.modelo.Jugada;
import co.edu.javeriana.monopoly.server.modelo.Jugador;
import co.edu.javeriana.monopoly.server.modelo.Monopoly;
import co.edu.javeriana.monopoly.server.modelo.MonopolyException;

import java.rmi.RemoteException;

import java.util.Enumeration;

public class FinJuego extends Evento{
    public FinJuego(Object[] objects) {
        super(objects);
    }

    public void ejecutar() throws MonopolyException {

        Monopoly m;

        try {
            m = Monopoly.getMonopoly();
        } catch (RemoteException e) {
             throw new MonopolyException("Error al traer el juego ",e);
        }
        Enumeration e = m.getTablero().getJugadores().elements();
        while (e.hasMoreElements()){
            Jugador j = (Jugador)e.nextElement();
            Evento r = null;
            if ( j.getEstado() == EstadoJugador.BancaRota ){
                r = new FinJuego(null);
            }
            else{
                r =  new Ganador(null);
            }
            try {
                Jugada jugada = new Jugada();
                jugada.setJugador(null);
                jugada.setMonopoly(m);
                jugada.setRegla(r);
                m.enviarNotificacion(jugada,j);
            } catch (RemoteException f) {
                f.printStackTrace();
                throw new MonopolyException("Error asignar turno ",f);
            }
        }
    
    }
}
